package com.zyy.security.config;

import org.springframework.security.core.GrantedAuthority;

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

/**
 * 此类中的值必须与数据库中的media_role, media_permission 中值相匹配，必须以 "ROLE_" 或 "PERMISSION_" 开头
 *
 * 设置权限过程中使用此类的方式为：
 * 设置角色：@PreAuthorize("hasAuthority(T(com.zyy.admin.config.security.PermissionEnum).ROLE_USER)")
 * 设置权限：@PreAuthorize("hasAuthority(T(com.zyy.admin.config.security.PermissionEnum).ROLE_ADMIN)")
 */
public enum PermissionEnum implements GrantedAuthority {
    // 普通用户（默认登陆用户的角色）
    ROLE_USER("个人用户"),
    // 管理员用户
    ROLE_ADMIN("管理员用户"),
    PERMISSION_DATA_INTERFACE("数据接口权限");

    private String desc;

    PermissionEnum(String desc) {
        this.desc = desc;
    }

    public String getDesc() {
        return desc;
    }

    public static List<String> getAllRoles() {
        return Arrays.stream(PermissionEnum.values())
                .map(PermissionEnum::getAuthority)
                .filter(role -> role.startsWith("ROLE_"))
                .collect(Collectors.toList());
    }

    @Override
    public String getAuthority() {
        return null;
    }
}
